package config

import (
	"Educational/pkg/log"
	"github.com/spf13/viper"
	"go.uber.org/zap"
)
// 数据库配置
type DataBaseConfig struct {
	DSN				string `json:"dsn"`   // 数据库的连接配置
	AutoMigrate		bool `json:"autoMigrate"`   // 是否自动创建数据库表
}
// 服务端配置
type ServerConfig struct {
	Host	string `json:"host"`
	Port	string `json:"port"`
}

// 访问Url
type UrlsConfig struct {
	LoginUrl	string `json:"loginUrl"`         			// 登陆链接 需要与账号密码进行拼接
	GetClassScheduleUrl	string `json:"getClassScheduleUrl"` // 获取课表链接
	GetCreditUrl	string `json:"getCreditUrl"`   			// 获取学分链接
	GetExamPlanUrl	string `json:"getExamPlanUrl"` 			// 获取考试计划链接
	GetGreadUrl	string `json:"getGreadUrl"` 				// 获取成绩链接
	GetTrainingPlanUrl	string `json:"getTrainingPlanUrl"`  // 获取培养计划链接
}
type Config struct {
	DataBase DataBaseConfig
	Server ServerConfig
	Urls UrlsConfig

}
func New(configFile string) Config  {
	log.Logger.Debug("读取配置文件",zap.String("configFile",configFile))
	var cfg Config
	viper.SetConfigFile(configFile)
	if err := viper.ReadInConfig(); err != nil {
		log.Logger.Panic("配置文件读取错误", zap.String("configFile", configFile), zap.Error(err))
	}
	if err := viper.Unmarshal(&cfg); err != nil {
		if err != nil {
			log.Logger.Panic("配置文件解析错误", zap.String("configFile", configFile), zap.Error(err))
		}
	}
	return cfg
}